package com.lazydong.gui_gateway.gui;

import com.lazydong.gui_gateway.gui.layout.HCustomLayout;
import com.lazydong.gui_gateway.gui.layout.VCustomLayout;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.FileNotFoundException;

/**
 * @author lazydong
 */
public class TestJFrame extends JFrame {

    private static final int windowWidth = 600;
    private static final int windowHeight = 600;

    public static void main(String[] args) throws FileNotFoundException {
        TestJFrame app = new TestJFrame();
        app.startApp();
    }

    private void startApp() {
        // 初始化窗口
        JFrame jFrame = new JFrame("布局开发测试窗口");
        // 设置窗口的位置和大小
        jFrame.setBounds(400, 300, windowWidth, windowHeight);
        Container contentPane = jFrame.getContentPane();
        contentPane.setLayout(new VCustomLayout());
        contentPane.setSize(windowWidth, windowHeight);
        contentPane.setBackground(Color.DARK_GRAY);
        addContentPaneLayout(contentPane);


        jFrame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.out.println("点击了关闭按钮");
            }
        });

        // 设置窗口是否可见
        jFrame.setVisible(true);
        // 设置窗口是否可以缩放
        jFrame.setResizable(false);
        /*
         * 设置窗口的相对位置。
         * 如果 comp 整个显示区域在屏幕内, 则将窗口放置到 comp 的中心;
         * 如果 comp 显示区域有部分不在屏幕内, 则将该窗口放置在最接近 comp 中心的一侧;
         * comp 为 null, 表示将窗口放置到屏幕中心。
         */
        jFrame.setLocationRelativeTo(null);
        /*
         * 设置窗口关闭按钮点击后的默认操作, 参考值:
         *     WindowConstants.DO_NOTHING_ON_CLOSE: 不执行任何操作。
         *     WindowConstants.HIDE_ON_CLOSE: 隐藏窗口（不会结束进程）, 再次调用 setVisible(true) 将再次显示。
         *     WindowConstants.DISPOSE_ON_CLOSE: 销毁窗口, 如果所有可显示的窗口都被 DISPOSE, 则可能会自动结束进程。
         *     WindowConstants.EXIT_ON_CLOSE: 退出进程。
         */
        jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        jFrame.setLayout(null);
    }

    private void addContentPaneLayout(Container contentPane) {
        contentPane.setLayout(new HCustomLayout());
        JPanel one = new JPanel();
        one.setBackground(Color.yellow);
        contentPane.add(one, "40%");


        one.setLayout(new VCustomLayout());
        JPanel one1 = new JPanel();
        one1.setBackground(Color.BLUE);
        one.add(one1, "20%");
        JTextArea textArea = new JTextArea();
        textArea.setLineWrap(true);
        JScrollPane scrollPane = new JScrollPane(textArea);
        one.add(scrollPane, "20%");
        textArea.setEditable(false);


        JButton button = new JButton();
        button.setText("这是按钮");
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                for (int i = 0; i < 2; i++) {
                    textArea.append("添加：圈子服务" + "--> 本地服务 127.0.0.1:8080");
                    textArea.append(System.lineSeparator());
                    textArea.append("删除：圈子服务" + "--> 本地服务 127.0.0.1:8080");
                    textArea.append(System.lineSeparator());
                    textArea.append("更新：圈子服务" + "--> 本地服务 127.0.0.1:8080");
                }
            }
        });
        one.add(button, "5%");






        JPanel two = new JPanel();
        two.setBackground(Color.green);
        contentPane.add(two, "40%");


    }
}
